18 research outputs found

    Establishing local temporal heap safety properties with applications to compile-time memory management

    Get PDF
    AbstractWe present a framework for statically reasoning about temporal heap safety properties. We focus on local temporal heap safety properties, in which the verification process may be performed for a program object independently of other program objects. We apply our framework to produce new conservative static algorithms for compile-time memory management, which prove for certain program points that a memory object or a heap reference will not be needed further. These algorithms can be used for reducing space consumption of Java programs. We have implemented a prototype of our framework, and used it to verify compile-time memory management properties for several small, but interesting example programs, including JavaCard programs

    Estimating the Impact of Heap Liveness Information on Space Consumption In Java

    No full text
    We study the potential impact of di#erent kinds of liveness information on the space consumption of a program in a garbage collected environment, specifically for Java. The idea is to measure the time di#erence between the actual time an object is collected by the garbage collector (GC) and the potential earliest time an object could be collected assuming liveness information were available. We focus on the following kinds of liveness information: (i) stack reference liveness (local reference variable liveness in Java), (ii) global reference liveness (static reference variable liveness in Java), (iii) heap reference liveness (instance reference variable liveness or array reference liveness in Java), and (vi) any combination of (i)-(iii). We also provide some insights on the kind of interface between a compiler and GC that could achieve these potential savings. The Jav

    On effectiveness of GC in Java

    No full text

    Cache-conscious coallocation of hot data streams

    No full text

    Intersecting heap abstractions with applications to compile-time memory management

    No full text
    1 Introduction This paper addresses the problem of computing the intersection of dynamicmemory abstractions. When applied to a set of elements of some abstract domain (lattice), this operator--commonly referred to as meet--yields the greatest lowerbound of all operands. Specifically, for two dynamic memory (also known as heap and store) abstractions, the corresponding meet value stands for the set ofcommon stores that are represented by its operands. As it is undecidable, in general, to prove interesting properties about pro-grams with dynamic memory allocation with pointers and destructive updates, the use of abstract interpretation [9] to compute an over-approximation of aprogram's operational semantics is a fundamental practice underlying this work. Thus, while proving some correct program properties may fail, every provedproperty is assured to hold
    corecore